The present disclosure relates generally to testing a circuit design, and more particularly to testing such circuit using a programmable emulation or prototyping tool.
Integrated circuit (IC) designers commonly describe their designs in hardware description language (HDL) such as Verilog, VHDL, SystemC, and the like. In IC design, hardware emulation may refer to the process of replicating behavior of one or more pieces of hardware, hereinafter also referred to as a design under test (DUT), with another piece of hardware, such as a special-purpose emulation system. An emulation model is usually generated in accordance with a hardware description language source code representing the design under test. The emulation model is compiled into a format used to program the emulation system. Running the emulation system that has been programmed enables debugging and functional verification of the design under test. Overall progress of the emulation is usually controlled by a master clock signal generated on the emulator hardware.
In some scenarios, a race condition may happen in hardware emulation that may result in unwanted behavior of the design under test. Race condition refers to the behavior of the design under test, in which the output is dependent on the sequence or timing of other uncontrollable events. When the design under test is emulated on a programmable hardware, race conditions may happen as a result of assigning or mapping programmable modules, e.g., hardware primitives, such as latch primitives, to each component in the design under test.
Latch race conditions may be resolved by adding auxiliary storage elements to the design. In general, the number of auxiliary storage elements may be proportional to the number of latches in the design for which a race condition is being resolved. This usually leads to an increase in the area of the design, that is, additional hardware primitive resources in the emulator are used up. In general, an inherent race condition may occur in an emulator if no special measures are taken to prevent it.
accordingly, there is a need for techniques to identify and/or prevent race conditions in emulation without increasing the area of the design.